package com.dlc.shop.platform.controller.cdek;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.util.Date;
import java.util.List;

@Data
public class CdekOrdersRequest {
    /**
     * "订单类型:
     * 1 - ""电商"" (仅持有 ""电商""类型签约的合同)， 默认值
     * 2 - ""普通"" (其他合同）"
     * <p>
     * integer
     * 否
     */
    private Integer type;

    /**
     * 客户订单跟踪号 (不填的话CDEK设置为订单的UUID)
     * 该仅 "电商"类型订单可使用
     * string(32)
     * 否
     */
    private String number;

    /**
     * 服务代码 - 快递产品代码 (查看服务列表
     * <p>
     * integer
     * 是
     */
    private Integer tariff_code;

    /**
     * 订单备注
     * <p>
     * String
     * 否
     */
    private String comment;

    /**
     * 寄件站点代码	5
     * String
     * 否
     */
    private String shipment_point1;

    /**
     * 收件站点代码	6
     * String
     * 否
     */
    private String delivery_point1;

    /**
     * 发货时的发票日期
     * 该属性仅 "电商" 类型订单可以使用的
     * date (yyyy-MM-dd)
     * 否  国际-是
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date date_invoice;

    /**
     * 承运商名称  该属性仅 "电商" 类型订单可以使用的
     * String
     * 否
     * 国际-是
     */
    private String shipper_name;

    /**
     * 承运商地址该属性仅 "电商" 类型订单可以使用的
     * String
     * 否
     * 国际-是
     */
    private String shipper_address;

    /**
     * 运输附加费 - 电商可添加让买家多付运费该属性仅 "电商" 类型订单可以使用的	10	money	否
     */
    private OrderMoney delivery_recipient_cost;

    /**
     * 根据货件申报价值的运输附加费用
     * 该属性仅 "电商" 类型订单可以使用的	11	threshold[]	否
     */
    private List<OrderThreshold> delivery_recipient_cost_adv;

    /**
     * 寄件方	12	contact	"电商-否
     * 普通-是"
     */
    private OrderContact sender;
    /**
     * 实际卖家  该属性仅 "电商" 类型订单可以使用的
     * seller
     * 否
     */
    private OrderSeller seller;

    /**
     * 收件方
     * contact
     * 是
     */
    private OrderContact recipient;
    /**
     * 寄件地址	15	location	是
     */
    private OrderLocation from_location;
    /**
     * 收件地址	16	location	是
     */
    private OrderLocation to_location;
    /**
     * 增值服务列表	17	service[]	否
     */
    private List<OrderService> services;
    /**
     * 包装件列表	18
     * package[]	是
     */
    private List<OrderPackage> packages;

    /**
     * 打印（
     * waybill -货单，
     * barcode - 面单）
     * 19
     * string(7)
     * 否
     */
    private String print;

}
